/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.unipar.oficina.service.cadastros;

import br.com.unipar.oficina.service.cadastros.GenericServiceImpl;
import br.com.unipar.oficina.modelo.cadastros.Cidade;
import br.com.unipar.oficina.modelo.cadastros.Estado;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;

/**
 *
 * @author Thiago Marques
 */
@Service("cidadeService")
public class CidadeServiceImpl
        extends GenericServiceImpl<Cidade>
        implements CidadeService {
    
    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public Cidade getByIdCidade(Long id) {
        return entityManager.find(Cidade.class, id);
    }

    @Override
    public Estado getByIdEstado(Long id) {
        return entityManager.find(Estado.class, id);
    }

    @Override
    public List<Estado> getEstados() {
        Criteria crit = ((Session) entityManager.getDelegate()).createCriteria(Estado.class);
        return crit.list();
    }

    @Override
    public List<Cidade> getCidades(Estado estado) {
        Criteria crit = ((Session) entityManager.getDelegate()).createCriteria(Cidade.class);
        crit.add(Restrictions.eq("estado", estado));
        return crit.list();
    }

}
